package com.zpself.module.算法练习.栈与队列;

import java.util.*;

/**
 * @author By ZengPeng
 * @Description
 * @date in  2020/10/10 11:12
 * @Modified By
 */
public class Stack与Deque的区别 {
    public static void main(String[] args) {
        //stack堆栈，后进先出,没有迭代器，支持push()方法。top()返回最顶端的元素,pop()剔除最顶元素，后进先出（LIFO）
        //deque双端队列，支持迭代器，有push_back()方法，跟vector差不多，比vector多了个pop_front,push_front方法；
        //queue队列，先进先出，没有迭代器。队列通常（但并非一定）以 FIFO（先进先出）的方式排序各个元素。
        // Queue使用时要尽量避免Collection的add()和remove()方法，而是要使用offer()来加入元素，使用poll()来获取并移出元素
        Stack<String> stack = new Stack<>();
        stack.push("a");
        stack.push("b");
        stack.push("c");
        stack.push("d");

        Deque<String> deque = new ArrayDeque<>();
        deque.push("a");
        deque.push("b");
        deque.push("c");
        deque.push("d");

        Queue<String> queue = new LinkedList<>();
        queue.add("a");
        queue.add("b");
        queue.add("c");
        queue.add("d");

        System.out.println(stack.pop());//peek只是看一眼
        System.out.println(deque.poll());
        System.out.println(queue.poll());

        System.out.println(stack);
        System.out.println(deque);
        System.out.println(queue);
    }
}
